\subsection{Erweiterungen}
\label{subsec:Erweiterungen}
Bei der Entwicklung von \RENGA wurde grosser Wert auf die einfache Erweiterbarkeit des Programms gelegt. In jedem der vorangegenen Abschnitte wurde bereits beschrieben wie die Klassenherachie der einzelnen Komponenten aufgebaut ist. Hieraus ergeben sich die in diesem Abschnitt noch einmal zusammenh\"angend dargestellten M\"oglichkeiten der Erweiterung um Datentypen, Primitve und Operationen.

\subsubsection{Datentypen}
Die Erweiterung von \RENGA um eine neuen Datentypen ist durch die in Abschnitt \ref{subsec:Datentypen} beschrieben Implementierung leicht zu realisieren. Es m\"ussen dazu nur folgende drei Schritte ausgef\"uhrt werden.
\begin{enumerate}
\item{Implementiere den gew\"unschten Datentyp in Java.}
\item{Implementiere je einen Converter f\"ur jeden Datentyp, der in diesen konvertiert werden k\"onnen soll.}
\item{F\"uge jeden Converter zur ConverterRegistry hinzu.}
\end{enumerate}


\subsubsection{Primitive}
Da die in \RENGA verwendeten Primitve, wie \RENGA selbst, in Java entwickelt wurde und \RENGA bereits auf die Erweiterung um solceh ausgerichtet ist, ist auch die Erweiterung leicht zu realisieren.
\begin{enumerate}
\item{Implementiere den gew\"unschten Primitiven als Unterklasse eines der in Interface von $UnaryFunction$, $BinaryFunction$, $\ldots$.}
\item{Falls gew\"unscht implemnetiere eine Animation f\"ur den Primitiven.}
\item{Falls gew\"unscht entwickle eine graphische Darstellung (beispielsweise ein Bild).}
\item{F\"uge der zentralen OperationFactoryRegistry eine neues Paar aus Operationsname und OperationsFactory hinzu.}
\end{enumerate}

\subsubsection{Operation}
Wenngleich die Erweiterung um neue Unterklassen von Operation nur selten be\-n\"o\-tigt werden sollte wird auch hierf\"ur ein Mechanismus bereitgestellt:
\begin{enumerate}
\item{Entwickle eine neue Operation-Klasse.}
\item{Falls notwendig entwickle eine $Reader$-Klasse f\"ur die Operation-Klasse.}
\item{F\"uge der OperationFactoryRegisty eine neues Paar aus Operationsname und OperationsFactory hinzu.}
\item{F\"uge falls notwendig der OperationReaderRegisty die neue $Reader$-Klasse hinzu.}
\end{enumerate}

\subsubsection{Initialisation}
Um die beschriebenen Erweiterungen in \RENGA zu laden verwendet \RENGA den folgenden Mechanismus:
\begin{enumerate}
\item{Lade alle \"ubergebenen $jar$-Dateien.}
\item{Durchsuche das Manifest jeder $jar$-Datei nach dem Schl\"ussel-Wert-Paar $Initializer:$.}
\item{Pr\"ufe ob die als \textit{Init\-ializer:} angegebe Klasse vorhanden und vom Typ \textit{Init\-ializer} ist.}
\item{Falls ja rufe die \textit{apply():Unit}-Methode der angegbenen Klasse auf.}
\end{enumerate}
Die \textit{apply}-Methode kann zur Eintragung von Factories und Convert in die entsprechenden Registries, sowie zu beliebigen weiteren Initialisierungen verwendet werden.
